package service

import (
	"fmt"
	"github.com/go-vgo/robotgo"
	"github.com/labstack/gommon/log"
)

var RtcSer = new(rtcService)

type rtcService struct {
}

func (s rtcService) WriteLogs(str string) {
	log.Debugf("前端日志：%s", str)
}
func (s rtcService) GetScreenSize() (wh string) {
	var (
		width  int
		height int
	)
	width, height = robotgo.GetScreenSize()
	// js 中的方法一次只能返回一个对象，多返回值时需要将多个值封装为对象，或者拼接为一个值
	return fmt.Sprintf("%d,%d", width, height)
}

// 移动鼠标
func (s rtcService) MouseMove(x, y int) {
	robotgo.Move(x, y)
}

// 左键单击
func (s rtcService) MouseClick() {
	robotgo.Click("left")
}

// 左键双击
func (s rtcService) MouseDoubleClick() {
	robotgo.Click("left", true)
}

// 右键单击
func (s rtcService) MouseRightClick() {
	robotgo.Click("right")
}

// MouseScroll 鼠标滚轮事件,不一定能用上，这个行为比较复杂，浏览器哪边不一定能正确传递过来
// direction 可选："up", "down", "left", "right"
func (s rtcService) MouseScroll(num int, direction string) {
	robotgo.ScrollDir(num, direction)
}

// KeyTap 键盘按下事件
func (s rtcService) KeyTap(key string, args ...interface{}) {
	err := robotgo.KeyTap(key, args)
	if err != nil {
		log.Errorf("KeyTap error: %v", err)
	}
}

// KeyToggle args 可选：down 和 up，可以实现一直安装不放和解除按住某个键的效果！，应该用不上，比较复杂
func (s rtcService) KeyToggle(key string, args ...interface{}) {
	err := robotgo.KeyToggle(`a`, args)
	if err != nil {
		log.Errorf("KeyToggle error: %v", err)
	}
}
